iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
JavaScript

大學生必學的Java入門技巧系列 第 25

[Day25] Java的Nested Class是什麼

  • 分享至 

  • xImage
  •  

Nested Class,中文可以翻譯為巢狀類別。它其實就是一個類別(Class)內,再定義另一個類別。可以想像成:一個主文件夾裡還有一個次文件夾,讓我們可以把相關聯的東西放在一起,使其變得更有條理。

主要可以分成兩種:

  1. static nested Class(靜態巢狀類別):它雖然定義在外部類別中,但和其關係較為鬆散。不須依賴外部便可存在,也可以直接用外部類別名來呼叫。但它只能存取外部類別的靜態成員。
    呼應前面舉的例子,這就像是文件夾裡的一個獨立文件,不需要主文件夾的內容也可以單獨存在。
  2. Non-static nested Class(非靜態巢狀類別):又可以稱為inner Class。它與外部類別關係非常緊密,需要甚至可以將它當作外部類別的一部分。內部可以輕鬆訪問外部的所有成員,即使是被定義為private的也可以。
    也就是說,它必須先有主文件夾(外部類別)開啟,才有它的存在。

為何要使用Nested Class

  1. 邏輯分組合理:若一個類別需要另一個類別存在時,它的存在才有意義的話,那麼將其包在一起是合乎邏輯的
  2. 增加封裝性:先前文章中有提過封裝的概念及重要性。假設有兩個superclass:A、B,若B需要訪問A的成員,便可讓B成為A的巢狀類別後,將A的成員定義為私有。如此一來,B除了可以訪問外,也可以對外界隱藏,增加程式的封裝性。

綜合看下來,巢狀類別可以使程式具有更好閱讀(readability),以及更好維護(maintainability)的特性,是不是非常不錯呢~


上一篇
[Day24] 幫糖果包上包裝紙-Wrapper Class
下一篇
[Day26] Java的網頁開發與資料庫簡介1
系列文
大學生必學的Java入門技巧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言